找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15340|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; t; r$ N0 w6 R6 g; d. t$ C$ |. P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " n. w( V2 T; h! E2 I9 S+ y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  A$ l6 g+ T* V6 H( U1 `usage: himr <address> <value>. sample: himr 0x80040000 0x0
- j  G' ~; }7 s/ J( x
- g: H& ~& b# C# |6 D9 q4 y( T0 `; \$ m* J/ F1 g, s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. [8 C- J6 _: V3 F: J$ S
3 N; o0 {6 @4 g  U2 e* R& e补充内容 (2012-3-8 09:42):* Q0 M$ F4 L' `  v( I# H" [! P
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 O8 P  a" }& c+ S: y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, K) e* R8 s+ Y/ z+ L5 K5 C( U( z. ?
himr <address> <value>. sample: himr 0x80040000 0x00 s" e4 T% Y7 _7 ]) c! y( \$ K! l  l

7 P1 p" i  |* W0 C! u9 }) ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 b, q) B7 M* n& }8 O
himr 0x80040000 0x00
2 _2 o# d0 a% ~# [) t) \) ohimr 0x80040001 0x112 f* d- Q; R  N; L& C
himr 0x80040002 0x22' Q, a  K" ~1 h, j
himr 0x80040003 0x33
+ n1 D% x0 Y2 w2 y; q0 C: Q8 }himr 0x80040004 0x44" f- _8 r* D: h; c* J
himr 0x80040005 0x55
9 h0 Y' W- N5 O7 n+ q" d! A: g' `. z  ]
SN也是类似。+ l+ ~/ B# E0 S! q8 m1 j

3 V  x5 E" s4 a4 y1 h% ~现在主要是,谁告诉我们MAC和SN的地址?
4 K0 X. t7 l: w; Y0 P
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& V1 |4 e. r+ |0 B/ @5 W一直想找到运程修改MAC和SN的办法,苦于无解啊

: D: g' K& K) u' P源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 ?* t, D0 f5 l  ~, m6 v' ^

  T* r0 S$ L& x# [: G修改的代码早有了。到今天不会编译。
8 ]# @* `! h( L! Y- B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" I5 `/ q  g/ e& q. M2 _& j" X
  2. #include <malloc.h>$ \' g0 I9 L- `& s/ m+ i
  3. #include <sys/types.h>* Y  u, h( ~2 t5 a
  4. #include <sys/stat.h>
    7 g' L' b& ?) b
  5. #include <sys/ioctl.h>
    / _5 A) ?! n3 ]: O/ N1 Q* b6 c( C& V
  6. #include <stdio.h>
    % a& {& f" o% ~# e! c2 w
  7. #include <string.h>
    $ S  y8 t4 S$ @: D6 T1 Y. j
  8.   {1 R; G: B# R3 J
  9. typedef struct {9 {) v; y2 a8 o5 T  f* o; U
  10.         unsigned int        e2prom_cmd_sub_addr;! ]7 E& K+ g1 S. i
  11.         unsigned int        sub_addr_count;2 C( J( c1 I, h  G7 ?: n3 r
  12.         unsigned char*        e2prom_cmd_data;9 C. k7 C9 w) D6 a
  13.         unsigned int        data_count;
    3 R5 E* @, [- J* t- e& _5 T
  14. } e2prom_s_cmd;( b! `6 N1 v+ e9 `- S2 Z; v7 ]& t% E
  15. ! s! A( e% J. H$ X
  16. #define E2PROM_CMD_READ 16 N( {3 {! s8 y
  17. #define E2PROM_CMD_WRITE 2" I$ P. @3 S1 ~( |* g7 T1 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , W+ O$ F5 w& S4 [
  19. / A" L2 }2 J8 ^' o) x* x  X/ X5 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% A) N5 O- `0 \: o
  21. {
    ' t# w$ v7 z' T6 O0 V- F7 x& A5 Q
  22.         int fd, ret;
    ( l" @; Z9 p7 U. u
  23.         e2prom_s_cmd arg;" |9 [) u5 Q" j6 A: m
  24.         unsigned char buf[0x18];, p1 ]; |$ J: u) Q( ]

  25. 6 S3 ~( E, p  @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; F( y' k; @; h- v# j
  27.         if (fd  < 0) {# v) A* @) G5 {4 q9 d6 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) Q& ~2 o# b- J, N
  29.                 return -1;
    : _( G" e0 k1 M9 G3 p1 a) q
  30.         }
    $ A2 W# Z4 Y9 c) B, h  o
  31.         arg.sub_addr_count      = 2;
    . ~) G: G; |/ L1 r
  32.         arg.data_count          = 0x18;5 u9 a( B9 T6 @  r& l: C( }4 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 d: p. h* P) g1 e2 F
  34.         arg.e2prom_cmd_data     = buf;6 Q6 Q" m9 m1 H& ~# U8 Y# ]/ D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# K2 c8 x4 ~1 ^" M/ H- O
  36.         if (ret != 0) {2 t8 Y% O6 z; V; `# w; a" O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * w4 ?, s1 u5 x& q3 j, }; Q
  38.                 return -1;
    8 g! Y1 b0 ~/ K( [) @$ g
  39.         }$ b2 O5 ~& U+ X5 H5 I
  40.         memcpy(mac, buf, 6);
    5 U5 P) f4 u' H- \; [/ Z
  41.         memcpy(stbid, &buf[6], 18);- l: o1 w! x$ o: w1 t2 A2 S  B+ r
  42.         stbid[18] = '\0';6 k7 ?6 _5 d# b# H

  43. ! T- T& l8 r/ c$ G" n
  44.         return 0;+ g* m" G9 [) X# }+ l& }
  45. }
    . a* N7 D4 H( y2 N5 ]' H

  46. # F0 q' e0 r7 s4 ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " r2 n! R* V2 [4 L
  48. {
    + Q2 r5 s: H$ K; ]5 d+ `
  49.         int fd, ret;
    1 c1 Y' i) D8 ]# I8 \
  50.         e2prom_s_cmd arg;
    ( E6 y- z3 H4 q' N( I' T3 {
  51.         unsigned char buf[0x18];4 T. Y  w6 P1 `3 j8 N
  52. 6 x  Z9 f( c! x. A, O9 }; B
  53.         memcpy(buf, mac, 6);  t5 |9 U; P$ m0 k: L
  54.         memcpy(&buf[6], stbid, 18);
    9 S: ]$ k$ u; Q$ |! Y/ ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' _6 Y6 Z  O7 K3 d
  56.         if (fd  < 0) {# @' m- r  ^: x' J; R5 p, p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 l) J+ B, u# {( m2 o0 q& D4 B
  58.                 return -1;; I" D) v' {% S5 I- k- i
  59.         }
    % t' [5 o* m9 X2 k- N
  60.         arg.sub_addr_count      = 2;
    0 z3 m; d8 c, ^7 R3 z/ z4 u
  61.         arg.data_count          = 0x18;
    , G/ [1 `$ \! C% d' \/ G) s+ f
  62.         arg.e2prom_cmd_sub_addr = 0x290;& t# d8 U4 M8 i" u& s
  63.         arg.e2prom_cmd_data     = buf;
    . V& S/ c' F2 c; T# T! W. s* w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, }; g5 @, M! [5 V/ N
  65.         if (ret != 0) {
    / H) {8 _( v/ W9 D& l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 s1 q3 q; D5 p+ ~% f7 t; {
  67.                 return -1;' e3 h& E/ }4 X
  68.         }
    . L1 E( I9 M6 @6 [* u- v6 Y; D( Q2 N
  69. 7 Z" o! |& P; T0 w% B2 K5 A
  70.         return 0;
    % w0 a6 L* l' R/ Z) G" n, r- |
  71. }; @# V+ C: t2 S+ E! j& B4 O# T
  72. % ?4 q- S' \" X  K; S
  73. int main()$ Z  e* |# ~6 x  Z, h2 M% }
  74. {. q& ~8 B" l5 `3 X3 H0 |9 o
  75.         char c;% g5 g8 `2 W) ]$ k( A
  76.         int i, macs[6];; K& g, |) `/ l) O3 @
  77.         unsigned char mac[6];; M2 T% O  ]( J5 O# X
  78.         unsigned char stbid[256];
    # g, s; u9 m! x; x* G( q
  79. 1 o8 V4 G" v( G+ h) H
  80.         if (readparam(mac, stbid) < 0)
    ( ^/ N) m2 O! E1 R
  81.                 return 1;% {# s+ Z+ l* i- m& E, v: L

  82. . @$ }* C3 W( I/ v- r
  83.         printf("Current parameters: \n");4 g1 B9 `8 W# {6 }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , [; Y/ Q. r' t5 _- z
  85.         printf("  STBID: %s\n", stbid);
    # T$ M+ j2 O& |5 D, ~$ e' y
  86.         1 I! Q: r0 |6 t2 K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 R, L. D- c  Y0 G% S& |2 j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; V7 m% k7 o0 Q4 r
  89.                 printf("Input MAC error\n");
    % @* c- N$ p2 ~# E* _
  90.                 return 1;
    , @+ J; O: b  {5 o# O
  91.         }
    " o' D; t- y" b4 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ l# H: O, {+ P
  93.         printf("\nPlease input new STBID: ");
      l5 [: U' ?, Z: e
  94.         scanf("%s", stbid);
    4 T7 x0 d" u, k0 B4 n
  95.         if (strlen(stbid) != 18) {
    1 d$ B4 K1 M" o
  96.                 printf("Invalid stbid\n");
    4 F% A/ c7 ^- o7 w, w
  97.                 return 1;% Q' U2 i& Y3 f6 e
  98.         }
    / _* N- `* W9 o; ~3 o' s5 v3 _
  99.         printf("\nNew parameters: \n");
    - i4 Z. Y2 ]& D5 B6 T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 d! ?3 M" ~% p  n) h0 l5 U
  101.         printf("  STBID: %s\n", stbid);
    : y& j7 q( O/ p' J
  102. 4 K8 y" Z( M/ r0 p0 w* _$ `4 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % w, h& V4 J5 ~/ g) G# w
  104.         for (;;) {
    , w6 S" G2 i: L0 N
  105.                 c = getchar();7 `4 W3 L0 r. S+ q& I; n( F
  106.                 if (c == 'y' || c == 'Y')  F7 |  D: f4 Z7 z" o1 i2 @
  107.                         break;+ {4 l9 H2 }2 X  Q$ ]5 d
  108.                 if (c == 'n' || c == 'N') {
    7 I8 X5 N# C1 g' r7 Y4 A+ u
  109.                         printf("\nAborted.\n");
    3 \% N3 A8 O& S+ @- G
  110.                         return 1;3 ]! s/ e3 s& u5 z+ f: _) G  e# C& T: U
  111.                 }
    6 c) \: e: J9 j( `) m' u8 n
  112.         }6 s8 L  U) r/ F8 E* l8 a. q( S
  113.         if (writeparam(mac, stbid) == 0)
    ! E4 Q5 }( _% |, n0 {6 [) J+ o
  114.                 printf("Parameters changed.\n");
    ) J. G, M* ?$ n- p" s

  115. 5 R; x# u7 W  u" @7 C* O/ H
  116.         return 0;8 C. H3 v7 C, ]( r9 A! j1 d
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
* {$ F8 m4 `4 y; W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ `: I# e3 Z+ w0 ]你用的编译命令行格式是什么?
' d# Z1 O0 H& m7 f1 _
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-24 14:53 , Processed in 0.040682 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表