找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15020|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; u3 w( e. L5 R& I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" s; D) h  Y5 B9 W0 U" ?  \; j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% r" Q" Y, I5 \/ z: ?! \usage: himr <address> <value>. sample: himr 0x80040000 0x04 A1 z& h9 Q4 u7 f, N  p8 p
/ I9 j9 Q1 T; q+ g/ Y/ W

; [& e( X, x' s; q6 U7 X5 b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 t, P3 F6 M6 n6 T
8 Q) B' M% J$ t5 g
补充内容 (2012-3-8 09:42):5 H5 c) M9 o$ ?0 s, d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 {. X# O. V# Y. p' Q# M这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) k/ B( i* Q! U: b1 n  ^8 J% R- w: F9 I# n2 J
himr <address> <value>. sample: himr 0x80040000 0x0
$ R4 Q* m# Z' V2 a' w
2 {7 l0 e! d* _! l' j9 u* }$ H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 E0 u) `5 f5 B1 m5 \himr 0x80040000 0x00* p, c' d0 x9 a) P/ s
himr 0x80040001 0x11$ n- C" A) \$ x5 _1 B% r, n
himr 0x80040002 0x22
2 k3 c& Y8 B: k. L, |himr 0x80040003 0x33
! X( T6 Z$ _- W' u! Zhimr 0x80040004 0x44
4 F/ M* _3 \; y  t1 Z4 Thimr 0x80040005 0x559 ]7 i; ?8 }8 g! z* m4 I  Q7 q
) j7 [- _5 Z7 J
SN也是类似。
$ v8 ?& \; f7 a8 G2 u3 W2 ^- N9 k  q1 e
现在主要是,谁告诉我们MAC和SN的地址?
, `. }' s6 H7 i% X2 }, n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 W, \$ F5 }! ]9 r5 a一直想找到运程修改MAC和SN的办法,苦于无解啊

3 }- ~0 V8 {" x1 Y6 s- J! c/ U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 D* n+ U! N, L% d
9 R5 N$ n0 n1 P  [8 K" p修改的代码早有了。到今天不会编译。
/ O4 o$ S" B: v/ B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># J5 ~3 }- t+ V9 z3 n8 a
  2. #include <malloc.h>
    ( n" j7 W  w* c& B% v
  3. #include <sys/types.h>
    + l+ U7 d; r: t2 U* J: l' j( f
  4. #include <sys/stat.h>% E8 E; q/ r; ^& q
  5. #include <sys/ioctl.h>2 W/ B$ ~0 r# c" |
  6. #include <stdio.h>
    2 L" r- ?( u$ C/ U( m0 Q# V) F. ?
  7. #include <string.h>
    : @" V2 g) ?+ w! T+ V  o, C
  8. 1 C3 p! o$ n4 j  j. `; ?; i
  9. typedef struct {
    . _& b; ^8 Z# i7 t+ o# u5 l
  10.         unsigned int        e2prom_cmd_sub_addr;, e* C. v' ]7 F" v7 b
  11.         unsigned int        sub_addr_count;" C" ~* X( k- E; @/ @
  12.         unsigned char*        e2prom_cmd_data;3 {* R' W2 {& K4 w7 ?/ ]
  13.         unsigned int        data_count;
    & j. }2 s8 u4 H  b& X
  14. } e2prom_s_cmd;: a# h1 b9 k' ^/ p
  15. % x: T% u1 Q' A5 U
  16. #define E2PROM_CMD_READ 1* v8 j" q! k1 {  N) f+ B# X
  17. #define E2PROM_CMD_WRITE 2. s" U6 b& }5 H3 ^- A7 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 F& m8 q. I$ e' J
  19. & L9 d2 ?  B. x
  20. static int readparam(unsigned char *mac, unsigned char *stbid); q0 G. f+ X2 d8 w
  21. {  U: Q- t) v& b8 V, T
  22.         int fd, ret;
    ( }* r) t0 c% o+ d! E
  23.         e2prom_s_cmd arg;
    ; S/ i. ~4 Z6 P1 |& S
  24.         unsigned char buf[0x18];2 }# u' L2 T2 i3 k9 h$ ^
  25. . U4 i& I% {5 v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. |2 S+ w# l: @- _6 W2 |* {
  27.         if (fd  < 0) {8 Q* e) H. x# G( G' `# \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 a# T0 y1 p9 x+ a* q3 p
  29.                 return -1;
    * U' q6 t  V" {% o8 N9 ^0 j% i
  30.         }
    # |$ d4 K4 g4 X8 ~$ h3 b
  31.         arg.sub_addr_count      = 2;
    7 Z/ l0 f1 }' M- j- _0 G+ x! m
  32.         arg.data_count          = 0x18;
    " K6 K! e. R& d6 X. P. h
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ z6 J$ u) R) k% x
  34.         arg.e2prom_cmd_data     = buf;
    3 e4 \9 Z2 r. E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " V$ S# H* K% S# x2 y) k
  36.         if (ret != 0) {% Y; a0 z, [' G( F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ O/ I/ Y: r! `* v1 \
  38.                 return -1;- ]3 [$ D2 U6 B% ?
  39.         }: i* j: `0 W) O, ~) |
  40.         memcpy(mac, buf, 6);
    ' \1 y2 p# R& k/ P
  41.         memcpy(stbid, &buf[6], 18);
    8 V% c* e5 r4 H+ ~) y
  42.         stbid[18] = '\0';+ |+ ~5 X( e5 ?+ o0 d
  43. : W3 n# r/ W! A" G7 f
  44.         return 0;
    8 @2 l. F6 V# q0 a2 j
  45. }
    * K0 l' I. D) P+ f. C. k7 S/ X& ~
  46. 4 x) O, t% J3 O* W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ W, c$ L7 T3 q7 R4 i6 G8 _7 ?4 Q
  48. {
    ' P# n- O) P  I/ q; I
  49.         int fd, ret;9 x) T" z7 |% t) a
  50.         e2prom_s_cmd arg;
    3 q- Z/ d+ t  W5 }# ^3 p% N% e
  51.         unsigned char buf[0x18];, g' |3 b7 C9 f$ W
  52. 9 M9 y& v) i* v. T% \4 g4 O
  53.         memcpy(buf, mac, 6);
    $ u4 ^( B& W  `- H
  54.         memcpy(&buf[6], stbid, 18);' v, M" Q, [) y( j8 L$ L8 J% C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* k6 l  T7 F% {
  56.         if (fd  < 0) {" D  Z3 t7 v. C- C& z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, X. P) r+ k/ d0 C6 @0 T
  58.                 return -1;$ H' E+ w2 ?8 A* g6 M. v
  59.         }
    " Q6 a! l' M) R$ |# y; L' o
  60.         arg.sub_addr_count      = 2;
    ( L3 n( {+ r/ u6 g* P  F: ~$ A
  61.         arg.data_count          = 0x18;
    6 g8 G5 A- T" c; ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;' J% W* B+ @, U1 c- A9 z
  63.         arg.e2prom_cmd_data     = buf;, L6 y9 C4 J, z7 `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; p0 M/ Y' m. V4 ~3 @
  65.         if (ret != 0) {: o; m) J# h7 R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 \8 G( c# z& `
  67.                 return -1;
    , N0 ?+ j2 \2 x7 P# K
  68.         }, L% f8 n& H  S- a" D
  69. / C; X4 S: M0 S  e0 M* ~: z! k
  70.         return 0;& Z  @: G* |9 i8 q2 I; D
  71. }
    6 M; E1 g: X/ V  D
  72. $ j7 f6 Q. U- T/ L( w0 \" @% W
  73. int main()
    6 g8 q5 g7 b0 g) s  m
  74. {' S" J: X1 B! e% L3 Z8 ^
  75.         char c;
    5 R0 A, y6 z! r$ K: k( w; u5 a
  76.         int i, macs[6];
    9 Z! X5 P8 y; z
  77.         unsigned char mac[6];
    ' F$ S  t' E+ o' K) j
  78.         unsigned char stbid[256];
    & g) b$ F- ]- y

  79. " S1 F3 J( q8 T' |
  80.         if (readparam(mac, stbid) < 0)
    $ o- p/ ?. _' t0 f7 H
  81.                 return 1;
    8 D0 C  {) }, G- {6 u( K

  82. 6 M* Q7 B( q& O
  83.         printf("Current parameters: \n");
    4 h  C  A- c+ h- W- r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; ]( g, T$ F8 y* |+ k$ S
  85.         printf("  STBID: %s\n", stbid);
    5 j4 a! t) Z- I
  86.        
    : X2 S# R9 y& ^- P7 {9 _/ ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ g' W: N, I3 I0 M; x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & c( a4 c* ~, U0 Z
  89.                 printf("Input MAC error\n");) L9 \2 r6 u4 Z* t: v# E
  90.                 return 1;4 M" z$ [; t4 s4 U% {; P
  91.         }
    / _3 @+ F% Z' ^8 V- q- R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# P4 y: F; ?8 q6 U# Q& W9 m2 H
  93.         printf("\nPlease input new STBID: ");( W8 S6 f. x1 i% l
  94.         scanf("%s", stbid);
    ) e* T5 e$ O  [0 q- c- C
  95.         if (strlen(stbid) != 18) {  N" [  d6 r8 o7 _
  96.                 printf("Invalid stbid\n");
    ; A$ u' d$ X8 C/ U4 j$ f
  97.                 return 1;
    & v  x; |) U$ O! [0 {" `
  98.         }
    8 B* _1 D! q. r/ m1 v6 _
  99.         printf("\nNew parameters: \n");+ w3 }4 m# H/ s9 j* e8 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 F, \( K! H% Z
  101.         printf("  STBID: %s\n", stbid);
    2 _3 @* D( I9 c3 a8 M
  102. 7 K  W2 h7 u7 E% Y0 J4 Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");( T. P, t" t4 \2 K4 Z2 q
  104.         for (;;) {1 L, A. _5 m" `5 l0 A+ z  M3 _
  105.                 c = getchar();
    2 s" P6 {, ^3 t9 C7 T2 E
  106.                 if (c == 'y' || c == 'Y')! G1 z- L1 w0 L: j8 ^% ]1 M
  107.                         break;
    , t3 r3 m8 q& R: ^$ T2 k: k: i2 ]
  108.                 if (c == 'n' || c == 'N') {
    * a+ W. n6 d7 A; n6 t4 P
  109.                         printf("\nAborted.\n");9 ]% k* Y& f( S; h! N
  110.                         return 1;
    ; w; V0 v' F# {. _' g9 V: K
  111.                 }
    ' j% G4 ~- K0 Y9 }) j
  112.         }
    / x" a% Q. e7 J" W! d3 H/ [0 i
  113.         if (writeparam(mac, stbid) == 0)
      i& l) r2 h9 M) N: c* v# L
  114.                 printf("Parameters changed.\n");# X+ k: v- \$ b/ \3 W! D- N

  115. 0 [" o* g0 |) N" {( C, S
  116.         return 0;% w# B& S, z- F' h1 w
  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
2 ^$ W+ B( }% r! c5 s' I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

' d5 X, D3 l* b. D/ E  E. W你用的编译命令行格式是什么?% Y" `  l, ~2 v& p+ }' s- J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-11 01:55 , Processed in 0.022719 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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