查看: 17360|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 f" E+ v$ M- k! ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 E+ n4 [1 c! c# V3 g% H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ _0 ~$ E' c9 k. l, T% Xusage: himr <address> <value>. sample: himr 0x80040000 0x0& c; |; \/ B& ^7 b
* Z& L9 C) w0 x9 J9 X

' }9 g" l# e* `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 O/ l% c( c' y. K5 ~2 t+ V
/ f/ S3 F  |, e0 F8 z9 u7 O
补充内容 (2012-3-8 09:42):1 F3 N2 |' o* Q6 ?+ h4 r5 M
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 q# X6 X% U/ l1 w# h. k- d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( w/ j, R" t* Y/ W* p! }, k
' O% |0 ~* S' }; r7 {
himr <address> <value>. sample: himr 0x80040000 0x0; P) i- V( _  V% W+ I( {
7 s2 Y/ l3 L- f# V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" E4 v/ l& ~" f  Y2 ?1 shimr 0x80040000 0x00
3 Z% H6 K2 i5 z& S8 o/ Ghimr 0x80040001 0x115 Z; V9 R6 G+ j: b# y* l
himr 0x80040002 0x22' j" o5 z1 ]6 j5 R) q, l
himr 0x80040003 0x334 F2 h% F" E+ D  `; x5 Z7 r' U7 w
himr 0x80040004 0x44% B% m3 `! V0 Z+ g
himr 0x80040005 0x55; b* G, y, j5 M, H9 e1 a- ^) a
( i3 {) f. e" r
SN也是类似。
% @2 ?9 G& ?: }$ c) ^3 q  w5 i3 r) e( I! n
现在主要是,谁告诉我们MAC和SN的地址?
, j6 R# R# O6 z8 A- ?" b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * z0 t9 F+ m" Q) Q% P
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 C  n" r5 q0 s# m' O7 m' d
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 I! r2 e, q) _; P# E: y6 v0 q$ w( g
修改的代码早有了。到今天不会编译。) X) c) @6 _2 i! f  V$ j
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" ]% P! L0 a0 Q. i
  2. #include <malloc.h>
    ; f4 C2 r# J3 ~. ~* R
  3. #include <sys/types.h>5 V1 [' j# z' [+ Q
  4. #include <sys/stat.h>+ f( [% x4 ?0 R( m# C" t
  5. #include <sys/ioctl.h>
    $ ^; X: e% M' k5 M. H9 R! r  |
  6. #include <stdio.h>
    2 q2 n% P0 n# d9 E! s7 w
  7. #include <string.h>
    2 d8 b6 @3 P$ r

  8. # P. j( _; r  Z4 s  c0 D
  9. typedef struct {" y4 T5 G5 i9 K# |( I6 L
  10.         unsigned int        e2prom_cmd_sub_addr;
    , O) W6 P  m& d$ I
  11.         unsigned int        sub_addr_count;
    : c  x0 f+ u( a4 Y2 y0 {
  12.         unsigned char*        e2prom_cmd_data;5 s; _% B+ {1 B; E8 P* D6 q
  13.         unsigned int        data_count;
    6 G8 V* g  g4 p7 G  c
  14. } e2prom_s_cmd;
    8 h! P' A% X+ j1 }$ n

  15. ) {' S$ g; v% N
  16. #define E2PROM_CMD_READ 1
    * A" _. K) Y( r/ s* r
  17. #define E2PROM_CMD_WRITE 2
    - x  I" f" O" E; Y& m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 @' X& e" u& N! p4 z

  19. 9 R5 l1 x1 s3 x' ~- b1 r, G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 t# N' |& `6 H0 y7 J% u
  21. {: ~5 [& x8 ~: T* N- @( @. G
  22.         int fd, ret;
    - F6 W+ o2 E& J
  23.         e2prom_s_cmd arg;
    : f2 N, I. h) b& c( @
  24.         unsigned char buf[0x18];3 P! t! R5 ~4 M0 j
  25. . q" \' d, G- J/ D% |6 G8 L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 r' X& `' S& g! Z- n% F- c
  27.         if (fd  < 0) {
    8 `: f- |5 X1 g; a  v8 c6 s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  J* C% n2 e. u$ q2 t' R5 Z8 W
  29.                 return -1;3 I- s; K- J& W& u
  30.         }/ \# n- D# {7 @5 l
  31.         arg.sub_addr_count      = 2;
    / z9 f) ?+ r/ P5 n4 \4 x- C- ^) D/ n$ b
  32.         arg.data_count          = 0x18;
    1 t! h& I3 _% f+ T  B0 ^# c
  33.         arg.e2prom_cmd_sub_addr = 0x290;; n/ X  l& u! J* H- s- H2 m
  34.         arg.e2prom_cmd_data     = buf;
    6 Z- v5 N0 F) e% h: |$ b- B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " i5 Y9 S$ [4 F; V
  36.         if (ret != 0) {
    ! U6 g! R7 c, B  [) G0 @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 J1 }3 F( B5 T9 y" d+ ]4 ^5 E
  38.                 return -1;7 s* [  m! u( M1 ?  c3 n
  39.         }
    4 \$ m: z% I. S2 m, w
  40.         memcpy(mac, buf, 6);; G9 G1 R. m% Q+ L* L; r- }9 |' y$ A
  41.         memcpy(stbid, &buf[6], 18);
    ; c# p8 T8 n2 C* R5 K2 c
  42.         stbid[18] = '\0';
    8 E2 n9 t- M0 I+ u6 ?3 X' ~  S7 Z
  43. 1 z" m- \& c  K
  44.         return 0;
    . H: d* e! i( Z% v' n
  45. }& B' ?* o9 R+ F3 l
  46. $ i! j* j2 L+ ^# y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) M1 J4 T1 C" ?8 o: t2 B- w- m
  48. {0 s  s; O) \2 ]& O: |, `
  49.         int fd, ret;
    0 F1 G7 I/ t! }' X3 m
  50.         e2prom_s_cmd arg;
    4 V) E( r9 Y" l9 b
  51.         unsigned char buf[0x18];: @- M3 _3 |- n
  52. 6 ?! i8 R3 F6 _. C  i
  53.         memcpy(buf, mac, 6);
    ' i( @' q4 ]: n1 J9 m; ]* \
  54.         memcpy(&buf[6], stbid, 18);% o0 R( S: B+ \& }# A0 g7 P4 ]* E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % W6 j% U' W2 V9 R0 u- M
  56.         if (fd  < 0) {8 i, [$ q: m/ j5 v6 R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- L$ f! i6 u+ p+ E+ q
  58.                 return -1;( G- |0 h. f/ s9 F, M7 M/ M
  59.         }  ]7 A; V0 I- v- f2 z4 e8 e
  60.         arg.sub_addr_count      = 2;2 C0 Z+ u% b- o2 o5 a
  61.         arg.data_count          = 0x18;" x% @  c. ]" Q! }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + J9 {) }. a9 S8 C; E6 t6 f# ]  a  x
  63.         arg.e2prom_cmd_data     = buf;4 q( L  }" S  Y4 Z. y; h$ i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 L1 C3 \1 z: {6 A
  65.         if (ret != 0) {+ O7 `9 K0 n% ^2 J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ ?4 F: F3 C  E
  67.                 return -1;% Y& I" D& x9 G
  68.         }7 L) a4 i, V  |; m. s& V6 p

  69. + X  x8 B$ L) r# m+ l7 P# a3 X& X5 m
  70.         return 0;
    3 H$ |8 }- b- g1 F+ V+ l
  71. }
    9 Q1 q6 N! O- i6 K+ i: G6 b. J2 `
  72. , }- a$ U( n* }1 v
  73. int main()6 U' \; t6 z* G/ @
  74. {
    7 C/ z% o7 s- a0 ^
  75.         char c;
    / N7 h, U- x# m# s
  76.         int i, macs[6];; f3 f( g3 R) y) k& J. n; n
  77.         unsigned char mac[6];6 j  G' A3 j2 J7 I
  78.         unsigned char stbid[256];
    5 R- M' i0 ]9 n3 K& q: Q

  79. & B5 r' X$ ~3 M9 S; M8 S3 v
  80.         if (readparam(mac, stbid) < 0)
    # ^# N' @% k' i
  81.                 return 1;
    1 W- ~7 v3 k% J+ e

  82. ! ]1 x1 @1 `6 B" s1 Y
  83.         printf("Current parameters: \n");
    % e( M0 [) T6 m+ B% W* A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ @9 q6 \$ p0 U0 D$ F2 m, M
  85.         printf("  STBID: %s\n", stbid);2 Z% U( e5 P) j4 A# K# U4 D
  86.        
    1 b0 p8 x: {4 B- u$ S7 }7 i0 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * ~1 J2 @; \3 O9 _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 K2 d4 ?9 i, `; m2 V1 Y
  89.                 printf("Input MAC error\n");4 a  I/ t3 N& W$ V7 ]0 l
  90.                 return 1;/ |8 N+ o3 Y5 T: n
  91.         }' k  S( M" }9 k0 Q' _7 X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 \8 ]# D% P. I& V! w- Z
  93.         printf("\nPlease input new STBID: ");
    7 X7 B+ x/ b6 i4 M3 P
  94.         scanf("%s", stbid);: n, i! G7 y  v& E, Y1 O3 m6 e6 V
  95.         if (strlen(stbid) != 18) {
    4 x+ D2 v2 E2 C/ R5 ]# z
  96.                 printf("Invalid stbid\n");
    : F" n) W/ C0 T6 Y# L
  97.                 return 1;$ D0 G, g# m: a0 @- ~" \% p
  98.         }
    ' w; Q0 [; C! T  R- E, u
  99.         printf("\nNew parameters: \n");
    ( q+ a9 Z  Y& r3 }8 H; z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  R1 v! X1 U! ?4 N- H
  101.         printf("  STBID: %s\n", stbid);, B) e' z# u5 T3 [4 X: c8 R5 e
  102. 0 E1 H3 o6 `  `! C7 `- X4 h9 c% D7 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . m  O3 F6 J' \, R2 g/ m/ s
  104.         for (;;) {$ R6 G( w5 F( M7 k
  105.                 c = getchar();1 e9 ^* \, f# T. {, \
  106.                 if (c == 'y' || c == 'Y')
    ' z9 R/ `, I; \
  107.                         break;, K' C7 E" d" Z7 d0 b
  108.                 if (c == 'n' || c == 'N') {
    ! C+ U0 s' R- r8 e
  109.                         printf("\nAborted.\n");
    ( k1 o5 T7 b6 ^
  110.                         return 1;% o7 N2 {9 @. D3 y3 G; ~# Z
  111.                 }6 {4 t+ `2 k/ q! J; w# l4 M
  112.         }0 Q7 \7 O) U, c9 ^9 r& a4 o
  113.         if (writeparam(mac, stbid) == 0) ' N. _, X- p3 b
  114.                 printf("Parameters changed.\n");
    1 F* b& U* M# g) B! D: Z5 n( l; g
  115. 5 L6 }5 K9 {3 _7 o, Z- X5 I
  116.         return 0;+ j5 ^* ^6 _& a7 v( L8 }
  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 ; }3 j7 e4 v0 Q: Q5 Z/ [8 w# Y
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 w( c0 v* I, T  |- [: T/ ]0 f你用的编译命令行格式是什么?; X- q4 z6 x1 y2 w# N- ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部